﻿using System;

namespace Common.Exceptional
{
    /// <summary>
    /// 提示信息仅仅会导致当前的执行块（事件处理程序）失败，并不会导致整个处理链中断
    /// </summary>
    public class Info : ManagedException
    {
        public Info(string message, string code = null) :
            base(message, code, ExceptionLevel.Info)
        {

        }
    }

    /// <summary>
    /// 警告会导致执行逻辑从异常的抛出处中断，但是不会导致整个执行逻辑失败
    /// </summary>
    public class Causion : ManagedException
    {
        public Causion(string message, string code = null) :
            base(message, code, ExceptionLevel.Causion)
        {

        }

        public Causion(string message, string code = null, Exception innerException = null) :
            base(message, code, ExceptionLevel.Causion, innerException)
        {

        }
    }

    /// <summary>
    /// 数据合法性校验未通过，外部系统调用的错误（偶发性的，意料之外的异常）
    /// </summary>
    public class Error : ManagedException
    {
        public Error(Exception innerException, string message = "应用程序发生了错误", string code = "System_Error") : base(message, code, ExceptionLevel.Error, innerException)
        {

        }
    }

    /// <summary>
    /// 严重错误，例如组建级别的错误
    /// </summary>
    public class SeriousError : ManagedException
    {
        public SeriousError(Exception innerException,
            string message = "应用程序发生了严重错误",
            string code = "System_SeriousError") :
                base(message, code, ExceptionLevel.SeriousError, innerException)
        {

        }
    }
}